import pytest
import yaml
from pythoncode.calculator import Calculator


#fixture 可以加参数：
# 1、作用域scope='module、class、function'，注意要被引用才生效，
# 2、autouse=True，自动被测试案例引用，作用于全部函数
'''
#类似setup、teardown，作业
@pytest.fixture()
def setupAndTeardown():
    print('开始计算')
    yield   #相当于 return，yield的前面相当于setup，后面的操作相当于teardown
    print('结束计算')
#生成一个计算器实例，并返回
@pytest.fixture()
def getCal():
    cal = Calculator()
    return cal
'''
# 这里由上面两个函数合并而成
@pytest.fixture()
def getCal2():
    print('开始计算')
    cal = Calculator()
    yield  cal
    print('结束计算')

#打开测试数据
def getDatas():
    with open('../datas/calc.yml', encoding='utf-8') as f:
        datas = yaml.safe_load(f)
        # print(datas)
        return datas

#测试数据用fixture传递
@pytest.fixture(params=getDatas()['add']['datas'], ids=getDatas()['add']['ids'])
def getFixDatas(request):
    myDatas = request.param
    return myDatas
